// pages/profile/profile.js
import { toPage } from '../../utils/util'
import { requestData } from '../../utils/ajax'
const api = require('../../utils/api')
const appInstance = getApp()
Page({
  /**
   * 页面的初始数据
   */
  data: {
    "info": {
      "avatar": "../../images/profile/default.jpeg",
      "nickname": "登录",
      "school": "未知",
      "academy": "未知"
    },
    "cards": [],
    "collection": [],
    "history":[],
    hasData: false,
    first: true,
  },
  toPage(event) {
    if (appInstance.globalData.isLogin) { // 已经登陆
      if (!this.data.hasData) {
        wx.showToast({
          title: '请求数据中，请稍后',
          mask: true,
          icon: 'none',
          duration: 1000
        })
        return
      }
      const { page } = event.currentTarget.dataset
      const pageDataStr = page.split('-')[1]
      let data = this.data[pageDataStr]
      toPage(event, data)
      return
    }
    wx.showModal({
      title: '请先登录',
      content: '是否确定登录',
      success: res => {
        if (res.confirm) {       
          this.login()
        } else if (res.cancel) {
          // console.log('用户点击取消')
        }
      }
    })
  },
  // 根据帖子 id 获取帖子内容，并设置进 data 中
  setCards(cards, cb) {
    if (!cards.length) {
      return
    }
    const data = []
    cards.forEach(card => {
      const id = card.id
      api.getCardById(id).then(res => {
        if (res) {
          data.push(res)
        }
        // 全部遍历完了，则返回
        if (cards[cards.length-1] === card) {
          cb && cb(data)
        }
      })
    })
  },
  getMyMessage() {
    api.getInfo(data => {
      if (!data) {
        // console.log('未能获取到信息')
        appInstance.globalData.isLogin = false // 未能获取数据，设置为未登陆状态
        return
      }
      // 如果设置 info，会导致页面加载完毕，数据才请求回来，avatar 字段无效，头像显示不了的问题
      // console.log(data)
      appInstance.globalData.isLogin = true // 获取数据成功，设置为登陆状态
      const { info, cards:cardIds, collection:collectionIds, history:historyIds } = data
      this.setData({info})
      this.setData({hasData: true})
      this.setCards(cardIds, (cards) => {
        cards.reverse()
        this.setData({cards})
      })
      this.setCards(collectionIds, (collection) => {
        collection.reverse()
        this.setData({collection})
      })
      this.setCards(historyIds, (history) => {
        history.reverse()
        this.setData({history})
        // console.log('profile')
        // console.log(this.data.info, this.data.cards, this.data.collection, this.data.history);
      })
    })
  },
  login() {
    if (appInstance.globalData.isLogin) { // 已经登陆了，直接返回
      return
    }
    wx.getUserProfile({ // 进行登陆
      desc: '用于完善资料', 
      success: res => {
        // 对象复制赋值
        const info = {...this.data.info}
        const { userInfo } = res
        info.nickname = userInfo.nickName
        info.avatar = userInfo.avatarUrl
        // console.log(res);
        this.setData({info})
        api.postInfo(info, () => {
          this.getMyMessage()
        })
        appInstance.globalData.isLogin = true // 登陆成功，设置为登陆状态
      }
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    if (this.data.first) {
      this.getMyMessage()
      this.setData({first: false})
    }

    // requestData('profile', (data) => {
    //   const { info, cards, collection, history } = data.profile
    //   this.setData({info, cards, collection, history})
    // })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    if (!this.data.first) {
      this.getMyMessage()
    }

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})